ldexp関数は、指定された仮数部(小数成分)と指数部(整数成分)から浮動小数点実数を求めます。この関数は、frexp関数の逆関数です。
#include <math.h>
double ldexp(double x, int exp);
xは仮数部の値を指定します。
expは指数部の値を指定します。
戻り値として、浮動小数点実数の値を返します。
ldexp関数は、浮動小数点実数xと2のexp乗との積の結果を返します。
プログラム 例
#include <stdio.h> #include <math.h> int main(void) { int loop_cnt; int exp; double x; for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) { printf('仮数部と指数部を入力してください ==> '); scanf('%lf%d', &x, &exp); printf('%f × 2^%d = %f\n', x, exp, ldexp(x, exp)); } return 0; }
例の実行結果
$ ./ldexp.exe 仮数部と指数部を入力してください ==> 0.5 1 0.500000 × 2^1 = 1.000000 仮数部と指数部を入力してください ==> -0.5 1 -0.500000 × 2^1 = -1.000000 仮数部と指数部を入力してください ==> 0.5 9 0.500000 × 2^9 = 256.000000 仮数部と指数部を入力してください ==> 0.5 11 0.500000 × 2^11 = 1024.000000 仮数部と指数部を入力してください ==> 0.5 0 0.500000 × 2^0 = 0.500000 $